<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content {
            font-size: 0;
        }

        .div-1::after,
        .div-2::after,
        .div-3::after,
        .div-4::after,
        .div-5::after {
            content: '';
            display: block;
            clear: both;
        }

        .img-div {
            /* 先给所有的图片设为最小值 */
            /* 鼠标移动时修改div的尺寸 但是图片尺寸不变 只会被遮住或者漏出来 */
            width: 130px;
            height: 40px;
            overflow: hidden;
            float: left;
            border-right: 1px solid #fff;
            border-bottom: 1px solid #fff;
        }

        /* 鼠标默认在第一行第一列 */
        .div-1 .img-div {
            height: 400px;
        }

        .div-1 .img-div:first-child,
        .div-2 .img-div:first-child,
        .div-3 .img-div:first-child,
        .div-4 .img-div:first-child,
        .div-5 .img-div:first-child {
            width: 340px;
        }
    </style>
</head>

<body>
    <div class="content">
    </div>
    <script>
        // 图片的四个状态 鼠标所在行 鼠标所在列 鼠标所在的图 三不沾
        // 图片对四个尺寸  高度最高   宽度最宽   最宽而且最高  最小
        // width  130  340    height  400  40
        var str = ''; // 这里面是所有的内容 每次循环无论内外 都要给str加内容 
        // str先加每一行的div的前半个标签 再加4个img 最后加 div的结尾 这个过程循环5次
        // 图片和行数列数的对应关系 （行-1）*4+列
        for (var j = 1; j < 6; j++) { // 再写外层---每一行中的那些div 这个div中包着4张图
            // 先写内层---某一行中的那些图片,比如先写第4行的四张图
            str += "<div class=div-" + j + ">"
            for (var i = 1; i < 5; i++) {
                str += "<div class=img-div data-row=" + j + " data-col=" + i + "><img class=img src=./images/image" + ((j - 1) * 4 + i) + ".jpg ></div>"
            }
            str += "</div>"
        }
        var bigDiv = document.querySelector('.content');
        bigDiv.innerHTML = str;

        // 给图片所在的div绑定事件
        var divList = document.querySelectorAll('.img-div');
        divList.forEach(function (item, index) {
            // 遍历，绑定事件监听
            // console.log(item, index);
            item.onmouseover = function () {
                selectImg(item)
            }
        })

        // 选择图片后 修改尺寸
        function selectImg(div) {
            // 这里得到了鼠标的所在行和列
            var row = div.getAttribute('data-row'); // 鼠标所在行
            var col = div.getAttribute('data-col'); // 鼠标所在列
            // 根据index获取鼠标所在的行和列 然后修改大小
            // 修改当前图片、修改所在的行和列、剩下的还是最小的
            // index÷4  商是行 余数是列
            // 循环 分别判断4种情况
            divList.forEach(function (item) {
                if (item.getAttribute('data-row') == row) {
                    // 鼠标所在行的div们
                    item.style.width = '130px'
                    item.style.height = '400px'
                } else if (item.getAttribute('data-col') == col) {
                    // 鼠标所在列的div们
                    item.style.width = '340px'
                    item.style.height = '40px'
                } else {
                    // 三不沾 不是所在行也不是所在列
                    item.style.width = '130px'
                    item.style.height = '40px'
                }
                div.style.width = '340px';
                div.style.height = '400px'
            })
        }
    </script>
</body>

</html>